package com.liuzhilong.infrastructure.framework.netty.api.standard.processer;

import com.liuzhilong.infrastructure.framework.netty.api.standard.command.CommandType;
import org.checkerframework.checker.units.qual.C;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * 处理器注册器。<br>
 *  底层实现依赖于{@link ConcurrentHashMap}，是线程安全的。
 */
public class ProcessorHolder {
    private Map<CommandType,Processor> holder = new ConcurrentHashMap<>();

    /**
     * 注册一个processor，输入{@link CommandType},相同的commandtype会按照第一个为准。
     * @param commandType
     * @param processor
     */
    public void register(CommandType commandType,Processor processor){
        holder.putIfAbsent(commandType,processor);
    }

    /**
     * 获取一个{@link Processor}
     * @param commandType
     * @return
     */
    public Processor getProcessor(CommandType commandType){
        return holder.get(commandType);
    }


}
